React-[路由篇]-SPAs與React Router (上)


Posted by suihsilan on 2023-08-22

這篇給自己複習是主要偏向理解,下篇主要讓自己多練習實做,路由需要下載插件,寫入import也會在元件之中穿梭,所以要讓自己多熟練就是透過實做與分析了~~

路由(routing)到底是什麼?為什麼要加入到我們的網頁?

網路到底是怎麼運作的呢?先看下面的例子:

這就是路由的意義,不同的路由會載入不同的內容頁面顯示
其實在還沒有接觸框架前,我們是以HTML頁面資料來請求加載不同url的內容頁面,比如說:/welcome 我們會做一個welcome.html檔案,然後,/products 我們還會再做一個products.html網站
這通常是我們還沒有接觸前端框架時,所練習的土法煉鋼法

  • 以前的頁面切換時,每切換頁面就會發送一次http請求等待回應,再加載頁面

    若是以現代人的耐心應該很難接受這種html網頁請求與回覆並加載的慢節奏~~~
  • 這就是,為什麼需要SPA的開發

Single Page Applications(SPAs)/ 單頁式應用程式

其實我也一直不懂SPA專有名詞,在React學到路由,才真的比較明白為什麼需要React路由元件,為什麼需要建構SPA網頁如下:

我理解之後,我覺得路由可能就等同於“資源”,例如:我在“關於我”這個元件上,對應的路徑可能是“/aboutme”,從這個路徑來看,可以馬上的get到這個頁面(元件)就是“專門用來介紹自己的內容”的資源。


Router 有兩種路由表寫法:

AA.經典寫法 -> 元件管裡 -> BrowserRouter (伺服器端要另外處理)
BB.陣列管理 -> HashRouter -> 伺服器端不需要另外處理

下載React Router工具

其實React並沒有內建Router的功能,入門react也沒有能力可以自己寫Router工具,所以會需要安裝React其他開發者寫好的資源包/插件/庫-react-router-dom

什麼又是react-router-dom呢?

  • 是React的路由庫工具,安裝這個插件可以幫助我們實現路由,也專門用來構建SPA單頁式應用程序的導航和路由功能。
  • 基於React的元件化思維,允许我們可以以聲明的方式定義頁面之間的路由關係,將不同的頁面元件與特定的 URL 路徑產生連結,並在用户導航時動態加載和渲染这些頁面元件。

開發流程如下:

  1. 準備React Router環境
  2. 建立元件
  3. 匯入元件並撰寫路由表
  4. 加入對應的連結

A. 首先安裝react-router-dom這個插件

  • 在terminal安裝react-router-dom這個插件:
    $npm install react-router-dom
    上面有敘述過,這個工具會協助我們管理與監控URL的變化,然後加載不同的頁面元件內容。

B. React Router:如何加入前端路由

我現在要練習將我寫的元件一個一個渲染到畫面上,先大致敘述接下來的開發流程:


以下是以BrowserRouter為例,最下面有HashRouter的示範

步驟0:加入 BrowserRouter:以下動作只要在每個專案上加入一次即可

  • 0-1. BrowserRouter是react-routes的元件,這個只要在每個專案上加入一次即可
  • 0-2. 打開index.js(有時也叫main.jsx,這個檔案就是“進入點”,在這裡的檔案都會被編譯),在上方寫入:
  • 0-3. 在main.jsx上方import BrowserRouter這個元件後,就繼續將這個元件標籤寫在下方,包裹這這個根元件,有點像讓App整個環境被瀏覽器路由器用關愛的方式緊緊包圍著,不讓你迷失方向XD

步驟1:準備元件

我在我當前的作業專案中一共已經加入五個元件,然後因為是作業練習,所以以

  • Header.jsx
  • Week1.jsx
  • Week2.jsx
  • Week3.jsx
  • Week4.jsx

步驟2:引入並且撰寫Routes元件

  • 以下到APP.jsx中寫入:

  • 我整批元件都寫入是這樣:

步驟3:加入連結

到Header的頁面

  • 這裡意思:點擊不同的路由,會幫你抽換該路由對應的元件頁面

以下是以HashRouter為例

步驟0:加入 HashRouter

  • 0-1. 在main.jsx進入點檔案中,上方import
    import { HashRouter } from 'react-router-dom'
  • 0-2. 繼續將這個元件標籤寫在下方,包裹這這個根元件

步驟1:在App.jsx匯入兩個元件Routes, Route,開始撰寫路由

步驟2:建立元件About.jsx

步驟3:在App.jsx匯入元件

匯入元件About.jsx

  • 2-0. 建立元件後,到App.jsx中引入該元件import About.jsx
  • 2-1. 寫入元件路由表

步驟4:在App.jsx 引入NavLink元件並使用在導覽列



呈現

步驟5:讓NavLink元件自動判斷該連結是否點擊




然後加入三元運算子做判斷

待補


React Router:巢狀路由與Outlet

React Router:動態路由

補充:React 專案中的import手法

補充:Browser Router 與 Hash Router

筆記參考來源:

六角學院-React實戰影音


#React練習 #React路由篇 #react-router-dom #BrowserRouter #Routes, Route #Link







Related Posts

JS 學習筆記 : Map

JS 學習筆記 : Map

函式 Function

函式 Function

[MTR04] W1 D2 Git 基本指令

[MTR04] W1 D2 Git 基本指令


Comments